package com.hejing.接口interface.jdk8与jdk9中的接口新特性;

/**
 * ClassName: SubClassTest
 * Package: com.hejing.接口interface.jdk8与jdk9中的接口新特性
 * Description:
 *
 * @Author: HeJing
 * @Create: 2023-03-30 21:21
 * @Version: 1.0
 */
public class SubClassTest {
    public static void main(String[] args) {
        // 知识点1: 接口中声明的静态方法只能由接口进行调用，不能由实现类调用。
        CompareA.method01();
        // SubClass.method01();  // 报错，接口中的静态方法实现类不能调用。

        // 知识点2: 接口中声明的默认方法可以被实现类继承，实现类在没有重写此方法的情况下，默认调用接口中声明的默认方法。
        // 如果实现类重写了此方法，则调用的是自己重写的方法。
        SubClass s1 = new SubClass();
        s1.method02();

        // 知识点3: 类实现了两个接口，而两个接口中定义了同名同参数的默认方法，而实现类在没有重写此两个接口默认方法的
        // 情况下，会报错。称之为 接口冲突。
        // 要求: 此时实现类必须要重写接口中定义的同名同参数的方法。
        s1.method03();

        // 知识点4: 子类(或者实现类)继承了父类并实现了接口，父类和接口中声明了同名同参数的方法(接口中的方法是默认方法)，
        // 默认情况下，子类(实现类)在没有重写此方法的情况下，调用的是父类中的方法， 称之为 类优先原则。
        s1.method04();

        System.out.println("\n*******************************************\n");

        // 知识点5: 查看method04()方法，明晓如何在子类中指定调用父类或接口中被重写的方法。
        s1.method();


        // jdk9中的新特性: 定义私有方法。


    }
}




















